To increase performance of computing systems, multi-processor designs have been proposed. To most effectively take advantage of a multi-processor design, software developers seek to introduce parallelism into their applications for operations which do not conflict with respect to accessing memory. Thus, multiple processors are able to access the same storage system.
One system that provides for concurrent use of a storage system (e.g., main memory), while maintaining data integrity, includes the use of locks. However, programming effective locks is very difficult to do.
Transactional memory has shown promise as a mechanism for simplifying parallel programming. However, previous implementations have been costly, particularly in terms of complexity. Many approaches require a memory transaction to be compared with all other memory transactions occurring in the system. This requires searching potentially large descriptions of transactions, which causes performance and storage penalties associated with comparing each piece of data accessed.